package lh.toolclass;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则表达式验证类
 */
public class ValidationUtils {
//            2整数或者小数：^[0-9]+\.{0,1}[0-9]{0,2}$
//            3只能输入数字："^[0-9]*$"。
//            4只能输入n位的数字："^\d{n}$"。
//            5只能输入至少n位的数字："^\d{n,}$"。
//            6只能输入m~n位的数字：。"^\d{m,n}$"
//            7只能输入零和非零开头的数字："^(0|[1-9][0-9]*)$"。
//            8只能输入有两位小数的正实数："^[0-9]+(.[0-9]{2})?$"。
//            9只能输入有1~3位小数的正实数："^[0-9]+(.[0-9]{1,3})?$"。
//            10只能输入非零的正整数："^\+?[1-9][0-9]*$"。
//            11只能输入非零的负整数："^\-[1-9][]0-9"*$。
//            12只能输入长度为3的字符："^.{3}$"。
//            13只能输入由26个英文字母组成的字符串："^[A-Za-z]+$"。
//            14只能输入由26个大写英文字母组成的字符串："^[A-Z]+$"。
//            15只能输入由26个小写英文字母组成的字符串："^[a-z]+$"。
//            16只能输入由数字和26个英文字母组成的字符串："^[A-Za-z0-9]+$"。
//            17只能输入由数字、26个英文字母或者下划线组成的字符串："^\w+$"。
//            18验证用户密码："^[a-zA-Z]\w{5,17}$"正确格式为：以字母开头，长度在6~18之间，只能包含字符、数字和下划线。
//            19验证是否含有^%&',;=?$\"等字符："[^%&',;=?$\x22]+"。
//            20只能输入汉字："^[\u4e00-\u9fa5]{0,}$"
//            21验证Email地址："^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。
//            22验证InternetURL："^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。
//            23验证电话号码："^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为："XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
//            24验证身份证号（15位或18位数字）："^\d{15}|\d{18}$"。
//            25验证一年的12个月："^(0?[1-9]|1[0-2])$"正确格式为："01"～"09"和"1"～"12"。
//            26验证一个月的31天："^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为；"01"～"09"和"1"～"31"。
//            27匹配中文字符的正则表达式：[\u4e00-\u9fa5]
//            28匹配双字节字符(包括汉字在内)：[^\x00-\xff]
//            29应用：计算字符串的长度（一个双字节字符长度计2，ASCII字符计1）
//            30String.prototype.len=function(){returnthis.replace(/[^\x00-\xff]/g,"aa").length;}
//            31匹配空行的正则表达式：\n[\s|]*\r
//            32匹配html标签的正则表达式：<(.*)>(.*)<\/(.*)>|<(.*)\/>
//            33匹配首尾空格的正则表达式：(^\s*)|(\s*$)
    /**
     * 大小写英文和数字
     */
    private static final String UPPERCHAR_NUMBER = "^[A-Za-z0-9]+$";
    /**
     * 密码验证：长度在6~16之间，必须由字符、数字组成
     */
    private static final String PASSWORD = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$";

    public static boolean isCharAndNumber(String orgianl){
        return isMatch(UPPERCHAR_NUMBER, orgianl);
    }
    /**
     * 密码验证：长度在6~16之间，必须由字符、数字组成
     *
     * @param orgianl
     * @return
     */
    public static boolean isPassWord(String orgianl) {
        return isMatch(PASSWORD, orgianl);
    }

    /**
     * @param regex   正则表达式
     * @param orginal 待验证字符串
     * @return 是或否
     */
    private static boolean isMatch(String regex, String orginal) {
        if (orginal == null || orginal.trim().isEmpty()) { //$NON-NLS-1$
            return false;
        }
        Pattern pattern = Pattern.compile(regex);
        Matcher isNum = pattern.matcher(orginal);
        return isNum.matches();
    }


}
